package com.tencent.iov.cowin.befsale.clue.dao.clue;

import com.github.pagehelper.Page;
import com.tencent.iov.cowin.befsale.clue.controller.clue.vo.request.UpdateClueDayStatsRequest;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.ClueIntentionGradeDataRequest;
import com.tencent.iov.cowin.befsale.clue.domain.clue.po.ClueDayStats;
import com.software.boot.dao.annotation.MyBatisRepository;
import com.software.boot.dao.common.BaseDao;
import org.apache.ibatis.session.RowBounds;

import java.util.List;

/**
 * @Describe: 线索统计看板表_Dao接口层
 * @author: xiamu
 * @created: 2022-01-14 09:42:54
 * @version: 1.0
 */
@MyBatisRepository
public interface ClueDayStatsDao extends BaseDao<ClueDayStats> {

    /**
     * 通过ID获取详细信息
     *
     * @param: id
     * @return: ClueDayStats对象
     */
    ClueDayStats getDetailById(Long id);

    /**
     * 单条数据插入ClueDayStats
     *
     * @param request
     * @return 插入的条数
     */
    int insert(ClueDayStats request);

    /**
     * 批量插入ClueDayStats
     *
     * @param requests
     * @return 批量插入的条数
     */
    int insertBatch(List<ClueDayStats> requests);

    /**
     * 单条ClueDayStats更新
     *
     * @param request
     * @return 更新的条数
     */
    int update(ClueDayStats request);

    /**
     * 通过ID删除数据
     *
     * @param id
     * @return 删除的条数
     */
    int delete(Integer id);

    /**
     * 根据条件查询对象对象list列表
     *
     * @param request
     * @return 查询结果
     */
    List<ClueDayStats> getListByParam(ClueDayStats request);

    /**
     * 根据条件查询对象分页对象
     *
     * @param request
     * @return 查询结果
     */
    Page<ClueDayStats> getPageByParam(ClueDayStats request, RowBounds rowBounds);

    /**
     * 根据条件查询单个对象
     *
     * @param request
     * @return
     */
    ClueDayStats getOneByParam(ClueDayStats request);

    /**
     * 管理看板-顾问排行
     * add by zly 2022-01-14
     * @param clueDataRequestParam
     * @return
     */
    Page<ClueDayStats> getClueTaskDataByType(ClueIntentionGradeDataRequest clueDataRequestParam, RowBounds rowBounds);

    /**
     * 批量同步宽表的顾问到统计表，若已在统计表存在的顾问，则不会同步
     * add by zly
     * 2022-01-14
     */
    void sycnInsertBatch(ClueIntentionGradeDataRequest clueDataRequest);

    /**
     * 查询统计表中 顾问名称或者图像，或者租户，或者企微，为空的顾问
     * add by zly
     * 2022-01-14
     * @return
     */
    List<Long> getEmployeeIdList();

    /**
     * 批量修改统计表中的顾问信息
     * add by zly
     * 2022-01-14
     * @param updateClueDayRequestList
     */
    void updateBatchClueDayByEmpId(List<UpdateClueDayStatsRequest> updateClueDayRequestList);

    /**
     * 根据统计开始时间，结束时间查询顾问userId
     * add by zly
     * 2022-01-15
     * @param empListRequest
     */
    List<ClueDayStats> getListByStartTimeEndTime(ClueDayStats empListRequest);

    /**
     * 根据主键批量修改统计表中的统计数据信息
     * add by zly
     * 2022-01-16
     * @param empList
     */
    void updateBatchClueDayById(List<ClueDayStats> empList);

    /**
     * 检查当天是否从宽表同步顾问过来
     * add by zly
     * 2022-01-16
     * @param sysnDataRequest
     * @return
     */
    Integer checkTheDayEmpData(ClueDayStats sysnDataRequest);

    /**
     * 删除统计表中租户，企微，usnerId为空得数据
     * add by zly
     * 2022-01-17
     * @param
     * @return
     */
    void deleteDateWithNoTenantId();
}